package com.pxst.merchant.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pxst.merchant.entity.SysMerchantInfo;
import com.pxst.merchant.req.MerchantInfoReq;
import com.pxst.merchant.req.MerchantListReq;
import com.pxst.merchant.resp.MerchantInfoResp;
import com.pxst.merchant.resp.MerchantListResp;
import com.pxst.merchant.resp.MerchantSelectListResp;
import com.pxst.resp.ApiResp;
import com.pxst.resp.PageResp;
import icu.mhb.mybatisplus.plugln.base.service.JoinIService;
import org.springframework.stereotype.Service;

import java.util.List;

/** 
* @author yangxy
* @version 创建时间：2023年9月7日 下午3:33:22 
*/
@Service
public interface SysMerchantInfoService extends JoinIService<SysMerchantInfo> {


    /**
     * -Author: @Ryan
     * -Description: 选择框中获取所有商户信息
     * -Param: [with-标识符作用]
     * -return: com.pxst.resp.ApiResp<java.util.List<com.pxst.merchant.resp.MerchantSelectListResp>>
     **/
    public ApiResp<List<MerchantSelectListResp>> getMerchantSelectList();



    /**
     * -Author: @Ryan
     * -Description: 根据参数获取商户列表
     * -Param: [merchantListReq]
     * -return: com.pxst.resp.ApiResp<java.util.List<com.pxst.merchant.entity.SysMerchantInfo>>
     **/
    public ApiResp<PageResp<MerchantListResp>> getMerchantInfoList(MerchantListReq merchantListReq) throws NoSuchFieldException, IllegalAccessException;


    /**
     * -Author: @Ryan
     * -Description: 新增商户
     * -Param: [merchantInfo-商户信息]
     * -return: com.pxst.resp.ApiResp
     **/
    public ApiResp<MerchantInfoResp> addMerchant(MerchantInfoReq merchantInfo) throws IllegalAccessException;


    /**
     * -Author: @Ryan
     * -Description: 修改商户信息及可用银行信息
     * -Param: [merchantInfoReq]
     * -return: com.pxst.resp.ApiResp<java.lang.String>
     **/
    public ApiResp<String> updateMerchant(MerchantInfoReq merchantInfoReq);

    /**
     * -Author: @Ryan
     * -Description: 根据商户id获取商户信息
     * -Param: [id]
     * -return: com.pxst.resp.ApiResp<com.pxst.merchant.resp.MerchantInfoResp>
     **/
    public ApiResp<MerchantInfoResp> getMerchantInfoById(Long id);
}
